package udp;

import java.io.IOException;
import java.io.Serializable;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;

import actualizador.DatoEquipo;
import actualizador.Mensaje;
import utiles.IMensaje;

public class UDPComunicacion {
	private UDPEnviador enviador;
	private UDPReceptor receptor;
	private int longBuffer= 1024;
	private String broadcast= "255.255.255.255";
	private Mensaje msg;
	
	public UDPComunicacion(String ip, int puertoEnvio, int puertoReceptor) throws SocketException {
		this.enviador= new UDPEnviador(puertoEnvio, broadcast);
		this.receptor= new UDPReceptor(puertoReceptor, longBuffer);
	}
	
	public void finalizar(){
		receptor.cerrarDatagrama();
		enviador.cerrarDatagrama();
	}
	
	public void enviarMensaje(String ipDestino, Serializable datos) throws UnknownHostException, SocketException, IOException{
		msg= new Mensaje(0, new DatoEquipo(), datos);
		this.enviador.enviarMensaje(ipDestino, msg);
	}
	
	public IMensaje recibirMensaje(int timeout) throws SocketTimeoutException, UnknownHostException, SocketException, ClassNotFoundException, IOException{
		return this.receptor.recibirMensaje(timeout);
	}
}